#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>

int main()
{
	pid_t pid;
	
	printf("[%d]-begin!\n", getpid());
	/*
	 * 刷新缓冲区，否则子进程会拷贝一份缓冲区，导致两份缓存
	 * 
	 * ！！！fflush操作非常重要！！！
	 * 
	 * */
	fflush(NULL);

	// 子进程创建结果：
	// 成功：子进程fork返回值为0，父进程fork返回值为子进程的进程号
	// 失败：父进程fork返回值为-1
	pid = fork();
	if(pid < 0){
		perror("fork()");
		exit(0);
	} else if (pid == 0) { 	// fork后，子进程与父进程是相同的程序，此处代码为子进程操作区
		printf("[%d]-child process is working!\n", getpid());
	} else { 	// fork后，父进程继续执行操作区
		printf("[%d]-parent process is working!\n", getpid());
	}
	
	printf("[%d]-end!\n", getpid());

	exit(0);
}
